﻿<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Network | node as icon</title>

  <script type="text/javascript" src="../../../dist/vis.js"></script>
  <link href="../../../dist/vis-network.min.css" rel="stylesheet" type="text/css" />

  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">

  <style>
    #mynetworkFA,
    #mynetworkIO {
      height: 300px;
      width: 700px;
      border:1px solid lightgrey;
    }

    p {
      max-width:700px;
    }
  </style>

  <script language="JavaScript">
    function draw() {
      /*
       * Example for FontAwesome
       */
      var optionsFA = {
        groups: {
          usergroups: {
            shape: 'icon',
            icon: {
              face: 'FontAwesome',
              code: '\uf0c0',
              size: 50,
              color: '#57169a'
            }
          },
          users: {
            shape: 'icon',
            icon: {
              face: 'FontAwesome',
              code: '\uf007',
              size: 50,
              color: '#aa00ff'
            }
          }
        }
      };

      // create an array with nodes
      var nodesFA = [{
        id: 1,
        label: 'User 1',
        group: 'users'
      }, {
        id: 2,
        label: 'User 2',
        group: 'users'
      }, {
        id: 3,
        label: 'Usergroup 1',
        group: 'usergroups'
      }, {
        id: 4,
        label: 'Usergroup 2',
        group: 'usergroups'
      }, {
        id: 5,
        label: 'Organisation 1',
        shape: 'icon',
        icon: {
          face: 'FontAwesome',
          code: '\uf1ad',
          size: 50,
          color: '#f0a30a'
        }
      }];

      // create an array with edges
      var edges = [{
        from: 1,
        to: 3
      }, {
        from: 1,
        to: 4
      }, {
        from: 2,
        to: 4
      }, {
        from: 3,
        to: 5
      }, {
        from: 4,
        to: 5
      }];

      // create a network
      var containerFA = document.getElementById('mynetworkFA');
      var dataFA = {
        nodes: nodesFA,
        edges: edges
      };

      var networkFA = new vis.Network(containerFA, dataFA, optionsFA);

      /*
       * Example for Ionicons
       */
      var optionsIO = {
        groups: {
          usergroups: {
            shape: 'icon',
            icon: {
              face: 'Ionicons',
              code: '\uf47c',
              size: 50,
              color: '#57169a'
            }
          },
          users: {
            shape: 'icon',
            icon: {
              face: 'Ionicons',
              code: '\uf47e',
              size: 50,
              color: '#aa00ff'
            }
          }
        }
      };

      // create an array with nodes
      var nodesIO = [{
        id: 1,
        label: 'User 1',
        group: 'users'
      }, {
        id: 2,
        label: 'User 2',
        group: 'users'
      }, {
        id: 3,
        label: 'Usergroup 1',
        group: 'usergroups'
      }, {
        id: 4,
        label: 'Usergroup 2',
        group: 'usergroups'
      }, {
        id: 5,
        label: 'Organisation 1',
        shape: 'icon',
        icon: {
          face: 'Ionicons',
          code: '\uf276',
          size: 50,
          color: '#f0a30a'
        }
      }];


      // create a network
      var containerIO = document.getElementById('mynetworkIO');
      var dataIO = {
        nodes: nodesIO,
        edges: edges
      };

      var networkIO = new vis.Network(containerIO, dataIO, optionsIO);
    }
  </script>
  
</head>
<body onload="draw()">
<p>
Icons can be used for nodes as well. This example shows Icons from fontAwesome and Ionicons but it should work with similar packages as well.
  It uses unicode and css to define the icons.<br><br> <b>Remember! Unicode in javascript is done like this: \uf274 for the unicode f274.</b>
  <br> If a node is shown as a rectangle, it means the css is not loaded (or not yet loaded). A redraw will fix that.

</p>

<h2>
  <i class="fa fa-flag"></i> Use FontAwesome-icons for nodes</h2>
<div id="mynetworkFA"></div>
<h2>
  <i class="ion ion-ionic"></i> Use Ionicons-icons for nodes</h2>
<div id="mynetworkIO"></div>

</body>

</html>
